开始之前:

1. 识别颜色输出相关数据

可识别HUSKYLENS 2视野内的色块,并输出色块相关数据,可以读取的数据有:靠近HUSKYLENS 2摄像头画面中心的色块ID号、检测到的色块总数、第一个检测到的色块ID号等。

示例程序如下

#include "unihiker_k10.h"
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2  huskylens;
UNIHIKER_K10 k10;
uint8_t      screen_dir=2;


// 主程序开始
void setup() {
	k10.begin();
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	k10.initScreen(screen_dir);
	k10.creatCanvas();
	huskylens.switchAlgorithm(ALGORITHM_COLOR_RECOGNITION);
}
void loop() {
	huskylens.getResult(ALGORITHM_COLOR_RECOGNITION);
	if ((huskylens.available(ALGORITHM_COLOR_RECOGNITION))) {
		k10.canvas->canvasText((String("靠近中心的色块ID:") + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_COLOR_RECOGNITION), Result, ID)))), 1, 0x0000FF);
		k10.canvas->canvasText((String("色块总数:") + String((huskylens.getCachedResultNum(ALGORITHM_COLOR_RECOGNITION)))), 3, 0x0000FF);
		k10.canvas->canvasText((String("第一个色块ID:") + String((RET_ITEM_NUM(huskylens.getCachedResultByIndex(ALGORITHM_COLOR_RECOGNITION, 1-1), Result, ID)))), 5, 0x0000FF);
	}
	k10.canvas->updateCanvas();
	delay(50);
}

上传程序,等待程序上传完成。

将HUSKYLENS 2的十字光标对准色块进行学习,如何学习颜色详细操作请看:颜色识别功能
学习完成后,将HUSKYLENS 2摄像头对准色块,观察输出结果。

**运行结果:**可输出检测到的色块总数,无论该色块是否已学习,只要方框框出色块,就会计数。可按要求输出相应色块ID号,其中靠近画面中心的色块被白框框出,即未学习的色块,因此输出的ID号为0。

Interface Diagram

2. 获取指定颜色的相关数据

HUSKYLENS 2识别颜色后,可获取画面中指定颜色的相关数据。例如,判断某个指定的颜色是否在画面中、指定颜色的名称、可获取画面中相同的指定颜色的色块数量,当画面中出现多个相同颜色的色块时,可指定获取其中某个色块的相关参数,包括名称、X/Y坐标、宽度、高度。

示例程序如下:

#include "unihiker_k10.h"
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2  huskylens;
UNIHIKER_K10 k10;
uint8_t      screen_dir=2;


// 主程序开始
void setup() {
	k10.begin();
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	k10.initScreen(screen_dir);
	k10.creatCanvas();
	huskylens.switchAlgorithm(ALGORITHM_COLOR_RECOGNITION);
}
void loop() {
	huskylens.getResult(ALGORITHM_COLOR_RECOGNITION);
	if ((huskylens.available(ALGORITHM_COLOR_RECOGNITION))) {
		if (((huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 1) != NULL))) {
			k10.canvas->canvasText((String("ID1色块总数:") + String((huskylens.getCachedResultNumByID(ALGORITHM_COLOR_RECOGNITION, 1)))), 1, 0x0000FF);
			k10.canvas->canvasText((String("ID1色块名称:") + String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 1), Result, name)))), 3, 0x0000FF);
			k10.canvas->canvasText("第一个ID1色块", 5, 0x0000FF);
			k10.canvas->canvasText((String("的坐标:") + String((String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_COLOR_RECOGNITION, 1, 1-1), Result, xCenter))) + String((String(",") + String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_COLOR_RECOGNITION, 1, 1-1), Result, yCenter)))))))), 5, 0x0000FF);
		}
	}
	k10.canvas->updateCanvas();
	delay(50);
}

**运行结果:**如图所示,可获取到画面中ID1的色块总数、ID1的色块名称,以及第一个检测到的ID1色块的坐标位置。(颜色名称可以自定义,默认为“颜色”)

Interface Diagram